﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ECOSYSTEM_Dominio
{
    public class Factura
    {
        private Int32 aFacturaID;       
        private String aNroFactura;
        private String aFecEmisionFac;
        private String aMonnedaFac;
        private String aTCambioFac;        
        private Double aSubTotalFac;
        private Double aIGVFact;        
        private Double aTotalFac;
        private String aTCancelacionFac;
        private Double aPagoCon;
        private Int32 aNroDiasPlaso;        
        private String aEstado;       
        private Int32 elUsuario;
        private String laGuiaRemision;               
        private String elCliente;                

        public Factura() { }
        public Factura(String pNroFactura, String pFecEmisionFac, String pTCambioFac, Double pIGVFac, Double pSubTotalfac, Double pTotalFac,Double pPagoCon, String pTCancelacionFac,Int32 pNroDiasPlaso, String pEstado, String pMonedaFac, String pCliente, Int32 pUsuario, String pGuiaRemision)
        {
            aNroFactura = pNroFactura;
            aFecEmisionFac = pFecEmisionFac;
            aTCambioFac = pTCambioFac;
            aIGVFact = pIGVFac;
            aSubTotalFac = pSubTotalfac;
            aTotalFac = pTotalFac;
            aPagoCon = pPagoCon;
            aTCancelacionFac = pTCancelacionFac;
            aMonnedaFac = pMonedaFac;
            aNroDiasPlaso = pNroDiasPlaso;
            aEstado = pEstado;
            elCliente = pCliente;
            elUsuario = pUsuario;
            laGuiaRemision = pGuiaRemision;
        }
        public Factura(Int32 pFacturaID, String pNroFactura, String pFecEmisionFac, String pTCambioFac, Double pIGVFac, Double pSubTotalfac, Double pTotalFac, Double pPagoCon, String pTCancelacionFac, String pMonedaFac, Int32 pNroDiasPlaso, String pEstado, String pCliente, Int32 pUsuario, String pGuiaRemision)
        {
            this.aFacturaID = pFacturaID;
            this.aNroFactura = pNroFactura;
            this.aFecEmisionFac = pFecEmisionFac;
            this.aTCambioFac = pTCambioFac;
            this.aIGVFact = pIGVFac;
            this.aSubTotalFac = pSubTotalfac;
            this.aTotalFac = pTotalFac;
            this.aPagoCon = pPagoCon;
            this.aTCancelacionFac = pTCancelacionFac;
            this.aMonnedaFac = pMonedaFac;
            this.aNroDiasPlaso = pNroDiasPlaso;
            this.aEstado = pEstado;
            this.elCliente = pCliente;
            this.elUsuario = pUsuario;
            this.laGuiaRemision = pGuiaRemision;
        }
        public Int32 FacturaID
        {
            get { return aFacturaID; }
            set { aFacturaID = value; }
        }
        public String NroFactura
        {
            get { return aNroFactura; }
            set { aNroFactura = value; }
        }
        public String FecEmisionFac
        {
            get { return aFecEmisionFac; }
            set { aFecEmisionFac = value; }
        }
        public String TCambioFac
        {
            get { return aTCambioFac; }
            set { aTCambioFac = value; }
        } 
        public Double IGVFact
        {
            get { return aIGVFact; }
            set { aIGVFact = value; }
        }
        public Double SubTotalFac
        {
            get { return aSubTotalFac; }
            set { aSubTotalFac = value; }
        } 
        public Double TotalFac
        {
            get { return aTotalFac; }
            set { aTotalFac = value; }
        }
        public Double PagoCon
        {
            get { return aPagoCon; }
            set { aPagoCon = value; }
        }
        public Int32 NroDiasPlaso
        {
            get { return aNroDiasPlaso; }
            set { aNroDiasPlaso = value; }
        }
        public String Estado
        {
            get { return aEstado; }
            set { aEstado = value; }
        }
        public String TCancelacionFac
        {
            get { return aTCancelacionFac; }
            set { aTCancelacionFac = value; }
        }
        public String MonedaFac
        {
            get { return aMonnedaFac; }
            set { aMonnedaFac = value; }
        }
        public String ElCliente
        {
            get { return elCliente; }
            set { elCliente = value; }
        }
        public Int32 ElUsuario
        {
            get { return elUsuario; }
            set { elUsuario = value; }
        }
        public String LaGuiaRemision
        {
            get { return laGuiaRemision; }
            set { laGuiaRemision = value; }
        }
        //DETALLE FACTURA POR PRODUCTOS
        public class DetalleFacturaProducto {
            private Double aPrecioVenta;
            private Int32 aCantidadProd;
            private Int32 aProductoID;
            private Int32 aFacturaID;
            private String aNameProduc;           
            
            public DetalleFacturaProducto() { }
            public DetalleFacturaProducto(Double pPrecioVenta, Int32 pCantidadProd, Int32 pProductoID, Int32 pFacturaID, String pNameProd) {
                this.aPrecioVenta = pPrecioVenta;
                this.aCantidadProd = pCantidadProd;
                this.aProductoID = pProductoID;
                this.aFacturaID = pFacturaID;
                this.aNameProduc = pNameProd;
            }

            public Double PrecioVenta
            {
                get { return aPrecioVenta; }
                set { aPrecioVenta = value; }
            }
            public Int32 CantidadProd
            {
                get { return aCantidadProd; }
                set { aCantidadProd = value; }
            }
            public Int32 ProductoID
            {
                get { return aProductoID; }
                set { aProductoID = value; }
            }
            public Int32 FacturaID
            {
                get { return aFacturaID; }
                set { aFacturaID = value; }
            }
            public String NameProduc
            {
                get { return aNameProduc; }
                set { aNameProduc = value; }
            }
        }
    }
}
